package tag

import (
	"coding.net/vco/mder/models"

	"github.com/flosch/pongo2"
)

func New() map[string]interface{} {
	return map[string]interface{}{
		"article":      article,
		"article_list": article_list,
		"catalog_list": catalog_list,
	}
}

//栏目列表
func catalog_list(args ...*pongo2.Value) *pongo2.Value {
	root := ""
	if len(args) > 0 {
		root = args[0].String() //第一个参数
	}
	return pongo2.AsValue(models.Catalog_List(root))
}

//内容
func article(arg *pongo2.Value) *pongo2.Value {
	return pongo2.AsValue(models.Article_Detail(arg.String()))
}

//tag.article_list
func article_list(args ...*pongo2.Value) *pongo2.Value {
	//第一个参数
	argsNum := len(args)
	if argsNum == 0 {
		return pongo2.AsValue(models.Article_List("", -1, 0))
	}
	first := args[0]
	if first.IsInteger() { //第一个参数是数字
		limit := first.Integer()
		skip := 0
		if argsNum > 1 {
			skip = args[1].Integer()
		}
		return pongo2.AsValue(models.Article_List("", limit, skip))
	} else if first.IsString() { //第一参数是字符串
		path := first.String()
		limit := -1
		if argsNum > 1 {
			limit = args[1].Integer()
		}
		skip := 0
		if argsNum > 2 {
			skip = args[2].Integer()
		}
		return pongo2.AsValue(models.Article_List(path, limit, skip))
	} else {
		//TODO
		//无法识别，参数异常
		return pongo2.AsValue(map[string]interface{}{})
	}
}
